home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / SLAX 6.0.8 / slax-6.0.8.iso / slax / base / 006-devel.lzm / usr / include / parted / geom.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-03-16  |  2.9 KB  |  84 lines

  1. /*
  2.     libparted - a library for manipulating disk partitions
  3.     Copyright (C) 1998-2001, 2005, 2006, 2007 Free Software Foundation, Inc.
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 3 of the License, or
  8.     (at your option) any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program.  If not, see <http://www.gnu.org/licenses/>.
  17. */
  18.  
  19. /**
  20.  * \addtogroup PedGeometry
  21.  * @{
  22.  */
  23.  
  24. /** \file geom.h */
  25.  
  26. #ifndef PED_GEOM_H_INCLUDED
  27. #define PED_GEOM_H_INCLUDED
  28.  
  29. #include <parted/device.h>
  30. #include <parted/timer.h>
  31.  
  32. typedef struct _PedGeometry    PedGeometry;
  33.  
  34. /**
  35.  * Geometry of the partition
  36.  */
  37. struct _PedGeometry {
  38.     PedDevice*        dev;
  39.     PedSector        start;
  40.     PedSector        length;
  41.     PedSector        end;
  42. };
  43.  
  44. extern int ped_geometry_init (PedGeometry* geom, const PedDevice* dev,
  45.                   PedSector start, PedSector length);
  46. extern PedGeometry* ped_geometry_new (const PedDevice* dev, PedSector start,
  47.                       PedSector length);
  48. extern PedGeometry* ped_geometry_duplicate (const PedGeometry* geom);
  49. extern PedGeometry* ped_geometry_intersect (const PedGeometry* a,
  50.                                const PedGeometry* b);
  51. extern void ped_geometry_destroy (PedGeometry* geom);
  52. extern int ped_geometry_set (PedGeometry* geom, PedSector start,
  53.                  PedSector length);
  54. extern int ped_geometry_set_start (PedGeometry* geom, PedSector start);
  55. extern int ped_geometry_set_end (PedGeometry* geom, PedSector end);
  56. extern int ped_geometry_test_overlap (const PedGeometry* a,
  57.                              const PedGeometry* b);
  58. extern int ped_geometry_test_inside (const PedGeometry* a,
  59.                      const PedGeometry* b);
  60. extern int ped_geometry_test_equal (const PedGeometry* a, const PedGeometry* b);
  61. extern int ped_geometry_test_sector_inside (const PedGeometry* geom,
  62.                                PedSector sect);
  63.  
  64. extern int ped_geometry_read (const PedGeometry* geom, void* buffer,
  65.                   PedSector offset, PedSector count);
  66. extern int ped_geometry_write (PedGeometry* geom, const void* buffer,
  67.                    PedSector offset, PedSector count);
  68. extern PedSector ped_geometry_check (PedGeometry* geom, void* buffer,
  69.                      PedSector buffer_size, PedSector offset,
  70.                      PedSector granularity, PedSector count,
  71.                      PedTimer* timer);
  72. extern int ped_geometry_sync (PedGeometry* geom);
  73. extern int ped_geometry_sync_fast (PedGeometry* geom);
  74.  
  75. /* returns -1 if "sector" is not within dest's space. */
  76. extern PedSector ped_geometry_map (const PedGeometry* dst,
  77.                    const PedGeometry* src,
  78.                    PedSector sector);
  79.  
  80. #endif /* PED_GEOM_H_INCLUDED */
  81.  
  82. /** @} */
  83.  
  84.